#include "main.h"

// 学生功能函数
// 学生登录
void Student_Func(list_str *list)
{
    // 登录
    int user_index = 0;
    if (!Student_log_in(list, &user_index))
    {
        printf("登录失败\n");
        exit(-1);
    }
    system("clear");
    printf("恭喜你 登录成功\n");

    int op = 0; // 菜单选型

    while (1)
    {
        system("clear");
        // 写一个菜单
        printf("1、查成绩\n");
        printf("2、乘法表\n");
        printf("3、猜数字\n");
        printf("4、计算器\n");
        printf("5、退出\n");

        scanf("%d", &op);

        switch (op)
        {
        case 1:
            /* 1、查成绩 */
            list_Student_find(list , list->data[user_index]);
            break;
        case 2:
            /* 2、乘法表 */
            multiplication_table();
            break;
        case 3:
            /* 3、猜数字 */
            guess_number();
            break;
        case 4:
            /* 4、计算器 */
            calculator();
            break;
        case 5:
            /* 5、退出 */
            printf("已退出,感谢您的使用\n");
            exit(-1);
            break;
        default:
            break;
        }
    }

    // 销毁顺序表
    list_free(&list);
}

// 老师登录
void Teacher_Func(list_str *list)
{
    // 登录
    int n = -1 ;
    if (!Teacher_log_in(list))
    {
        printf("登录失败\n");
        exit(-1);
    }
    system("clear");
    printf("恭喜你 登录成功\n");

    int op = 0; // 菜单选型

    while (1)
    {
        // 写一个菜单
        printf("1、增加学生\n");
        printf("2、删除学生\n");
        printf("3、成绩排序\n");
        printf("4、修改学生\n");
        printf("5、退出\n");

        scanf("%d", &op);

        switch (op)
        {
        case 1:
            /* 1、增加学生 */
            system("clear");
            //先打印信息
            list_printf(list);
            //进入增加函数
            list_Teacher_add(list);
            //更新文件
            file_update_file(list);
            //打印信息
            list_printf(list);
            printf("学生添加成功！\n");
            exit_();
            break;
        case 2:
            /* 2、删除学生 */
            system("clear");
            //调用是否删除函数，确定删除操作
            if (list_Teacher_ifdel(list))
            {
                //删除表最后一位学生数据
                list_Teacher_del(list);
                //更新文件
                file_update_file(list);
                //打印
                list_printf(list);
                printf("学生删除成功！\n");
                exit_();
            }
            system("clear");
            break;
        case 3:
            /* 3、成绩排序 */
            system("clear");
            //排序函数
            list_sort(list);
            //文件更新
            file_update_file(list);
            //打印
            list_printf(list);
            printf("学生排序成功！\n");
            exit_();
            break;
        case 4:
            /* 4、修改学生 */
            system("clear");
            //打印
            list_printf(list);
            //先判断要修改的学生，找下标
            n = list_Teacher_find(list);
            //如果返回-1，则表示没找到
            if(n == -1){
                printf("查无此人!\n");
                exit_();
                break;
            }
            //找到了则进行插修改操作
            list_Teacher_alter(list,n);
            //文件更新
            file_update_file(list);
            //打印
            list_printf(list);
            printf("学生修改成功！\n");
            exit_();
            break;
        case 5:
            /* 5、退出 */
            printf("已退出,感谢您的使用\n");
            exit(-1);
            break;
        default:
            break;
        }
    }

    // 销毁顺序表
    list_free(&list);
}

int main(int argc, char const *argv[])
{
    // 1 数据初始化 从文件中读取数据到表

    // 1.1 创建表
    list_str *list;

    list_init(&list);

    // 1.2 从文件中读取数据到表
    file_update_list(list);

    // 2 选择 老师 或 学生登录
    int op = 0;
    printf("1、学生登录 2、老师登录\n");
    scanf("%d", &op);

    switch (op)
    {
    case 1: // 学生登录
        system("clear");
        Student_Func(list);
        break;
    case 2: // 老师登录
        system("clear");
        Teacher_Func(list);
        break;
    default:
        break;
    }

    return 0;
}